www.gusucode.com > VC++ 编写软件自动升级服务源代码 > VC++ 编写软件自动升级服务源代码/gusucode/updater_src0.8.1.6/GarbageCollector.cpp

    //*********************************************************************
// INCLUDES
//*********************************************************************

#include "stdafx.h"
#include "GarbageCollector.h"

//*********************************************************************
// INITIALISATION
//*********************************************************************

std::auto_ptr<CGarbageCollector> CGarbageCollector::sm_inst;

//*********************************************************************
// CONSTRUCTOR & DESTRUCTOR
//*********************************************************************

CGarbageCollector::CGarbageCollector()
{
	// Initialize
	m_iFileCount = 0;
}

//*********************************************************************
// PUBLIC FUNCTIONS
//*********************************************************************

CGarbageCollector * CGarbageCollector::Instance()
{
	if(sm_inst.get() == 0)
	sm_inst = auto_ptr<CGarbageCollector>(new CGarbageCollector);
	return sm_inst.get();

	/* FOLLOWING CODE WORKS ONLY IN VC7
	if(sm_inst.get() == 0)
	sm_inst.reset(new CGarbageCollector);
	return sm_inst.get();
	*/
}

//=====================================================================

void CGarbageCollector::CleanGarbage()
{
	// Delete all files
	for (int i = 0; i < m_iFileCount; i++)
	{
		DeleteFile(m_arrFiles[i]);
	}

	m_iFileCount = 0;
}

//=====================================================================

void CGarbageCollector::AddFileToRemove(CString sFilename)
{
	// Add file
	m_arrFiles[m_iFileCount] = sFilename;
}

//*********************************************************************
// PRIVATE FUNCTIONS
//*********************************************************************